.PHONY : all lex parse clean

##
## to compile to byte code comment the next line
## and uncomment the line after
##
#OCAMLC=ocamlopt
OCAMLC=ocamlc
YACC=menhir 
LEX=ocamllex


##
## output name
##
OUTPUT=fsm

##
## flags
##
OCAMLCFLAGS=-o ${OUTPUT}
YACCFLAGS=--infer --explain
LEXFLAGS=

##
## source files
## note .mli must preceed .ml of the same name
##
OCAMLINTERFACES=fsm_parser.mli
##OCAMLINTERFACES=
OCAMLSOURCE=str.cma fsm_parser.ml fsm_lexer.ml
LEXSOURCE=fsm_lexer.mll
YACCSOURCE=fsm_parser.mly

##
## rules
##
all : ${OCAMLSOURCE} ${OCAMLINTERFACES}	
	${OCAMLC} ${OCAMLCFLAGS} ${OCAMLINTERFACES} ${OCAMLSOURCE}	

${OCAMLSOURCE} : lex parse

lex : parse ${OCAMLINTERFACES} ${LEXSOURCE}
	${LEX} ${LEXFLAGS} ${LEXSOURCE}

parse : ${YACCSOURCE}
	${YACC} ${YACCFLAGS} ${YACCSOURCE}

clean:
	rm *.ml *.mli *.cmi *.cmx *.o

clean-all:
	rm ${OUTPUT} *.ml *.mli *.cmi *.cmx *.o
